// 蜂窝蜜造平台生成代码，如手工更改，请添加到 .beeignore 忽略生成

package com.fowo.api.model.development.task;

import com.fowo.api.common.meta.MetaDataObject;
import com.fowo.api.common.meta.MetaDataObjects;
import com.fowo.api.common.model.PageSearch;
import com.fowo.api.common.mybatis.helper.PageSearchHelper;
import com.fowo.api.common.util.ListUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;

@Setter
@Getter
public class DevelopmentTaskSearchParamPo extends PageSearch {

  private static MetaDataObject metaDataObject;

  @Override
  public void applySqlSegments() {
    if (metaDataObject == null) {
      metaDataObject =
        ListUtils.find(
          MetaDataObjects.getObjects(),
          o -> "DevelopmentTask".equals(o.getName())
        );
    }
    PageSearchHelper.fillSqlSegments(this, metaDataObject);
  }

  @Override
  public void initFinal() {
    super.initFinal();
    applySqlSegments();
  }

  /**
   * 获取关联字段的查询表别名信息
   */
  @Override
  public Map<String, String> getJoinFieldTableAliasMap() {
    Map<String, String> map = new HashMap<>();
    map.put("assignPersonnel", "su");
    return map;
  }

  @Override
  public Map<String, OptionalJoinField> getOptionalJoinFields() {
    Map<String, OptionalJoinField> map = new HashMap<>();

    return map;
  }

  /**
   * 指定使用特定的视图过滤条件
   * <p>
   * 有效值包括：DevelopmentTask/AllData, DevelopmentTask/ToBeConsidered, DevelopmentTask/Submitted, DevelopmentTask/HandOut, DevelopmentTask/Complete, DevelopmentTask/Withdrawn
   * </p>
   */
  private String byViewName;

  /**
   * 编号
   */
  private Long id;

  /**
   * 最小编号
   */
  private Long idMin;

  /**
   * 最大编号
   */
  private Long idMax;

  /**
   * 编号 比较(eq)
   */
  private Long idEq;
  /**
   * 编号 比较(neq)
   */
  private Long idNeq;
  /**
   * 编号 比较(gt)
   */
  private Long idGt;
  /**
   * 编号 比较(gte)
   */
  private Long idGte;
  /**
   * 编号 比较(lt)
   */
  private Long idLt;
  /**
   * 编号 比较(lte)
   */
  private Long idLte;
  /**
   * 编号 比较(contains)
   */
  private Long idContains;
  /**
   * 编号 比较(notcontains)
   */
  private Long idNotcontains;
  /**
   * 编号 比较(startswith)
   */
  private Long idStartswith;
  /**
   * 编号 比较(endswith)
   */
  private Long idEndswith;
  /**
   * 编号 比较(isnull)
   */
  private Boolean idIsnull;
  /**
   * 编号 比较(isnotnull)
   */
  private Boolean idIsnotnull;

  /**
   * 任务编号(模糊搜索)
   */
  private String taskId;

  /**
   * 任务编号 比较(eq)
   */
  private String taskIdEq;
  /**
   * 任务编号 比较(neq)
   */
  private String taskIdNeq;
  /**
   * 任务编号 比较(gt)
   */
  private String taskIdGt;
  /**
   * 任务编号 比较(gte)
   */
  private String taskIdGte;
  /**
   * 任务编号 比较(lt)
   */
  private String taskIdLt;
  /**
   * 任务编号 比较(lte)
   */
  private String taskIdLte;
  /**
   * 任务编号 比较(contains)
   */
  private String taskIdContains;
  /**
   * 任务编号 比较(notcontains)
   */
  private String taskIdNotcontains;
  /**
   * 任务编号 比较(startswith)
   */
  private String taskIdStartswith;
  /**
   * 任务编号 比较(endswith)
   */
  private String taskIdEndswith;
  /**
   * 任务编号 比较(isnull)
   */
  private Boolean taskIdIsnull;
  /**
   * 任务编号 比较(isnotnull)
   */
  private Boolean taskIdIsnotnull;

  /**
   * 任务编号(精确搜索)
   */
  private List<String> taskIdInList;

  /**
   * 任务标题(模糊搜索)
   */
  private String taskTitle;

  /**
   * 任务标题 比较(eq)
   */
  private String taskTitleEq;
  /**
   * 任务标题 比较(neq)
   */
  private String taskTitleNeq;
  /**
   * 任务标题 比较(gt)
   */
  private String taskTitleGt;
  /**
   * 任务标题 比较(gte)
   */
  private String taskTitleGte;
  /**
   * 任务标题 比较(lt)
   */
  private String taskTitleLt;
  /**
   * 任务标题 比较(lte)
   */
  private String taskTitleLte;
  /**
   * 任务标题 比较(contains)
   */
  private String taskTitleContains;
  /**
   * 任务标题 比较(notcontains)
   */
  private String taskTitleNotcontains;
  /**
   * 任务标题 比较(startswith)
   */
  private String taskTitleStartswith;
  /**
   * 任务标题 比较(endswith)
   */
  private String taskTitleEndswith;
  /**
   * 任务标题 比较(isnull)
   */
  private Boolean taskTitleIsnull;
  /**
   * 任务标题 比较(isnotnull)
   */
  private Boolean taskTitleIsnotnull;

  /**
   * 任务标题(精确搜索)
   */
  private List<String> taskTitleInList;

  /**
   * 最早开始时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date startTimeStart;

  /**
   * 最晚开始时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date startTimeEnd;

  /**
   * 开始时间 比较(eq)
   */
  private Date startTimeEq;
  /**
   * 开始时间 比较(neq)
   */
  private Date startTimeNeq;
  /**
   * 开始时间 比较(gt)
   */
  private Date startTimeGt;
  /**
   * 开始时间 比较(gte)
   */
  private Date startTimeGte;
  /**
   * 开始时间 比较(lt)
   */
  private Date startTimeLt;
  /**
   * 开始时间 比较(lte)
   */
  private Date startTimeLte;
  /**
   * 开始时间 比较(contains)
   */
  private Date startTimeContains;
  /**
   * 开始时间 比较(notcontains)
   */
  private Date startTimeNotcontains;
  /**
   * 开始时间 比较(startswith)
   */
  private Date startTimeStartswith;
  /**
   * 开始时间 比较(endswith)
   */
  private Date startTimeEndswith;
  /**
   * 开始时间 比较(isnull)
   */
  private Boolean startTimeIsnull;
  /**
   * 开始时间 比较(isnotnull)
   */
  private Boolean startTimeIsnotnull;

  /**
   * 最早创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeStart;

  /**
   * 最晚创建时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date createTimeEnd;

  /**
   * 创建时间 比较(eq)
   */
  private Date createTimeEq;
  /**
   * 创建时间 比较(neq)
   */
  private Date createTimeNeq;
  /**
   * 创建时间 比较(gt)
   */
  private Date createTimeGt;
  /**
   * 创建时间 比较(gte)
   */
  private Date createTimeGte;
  /**
   * 创建时间 比较(lt)
   */
  private Date createTimeLt;
  /**
   * 创建时间 比较(lte)
   */
  private Date createTimeLte;
  /**
   * 创建时间 比较(contains)
   */
  private Date createTimeContains;
  /**
   * 创建时间 比较(notcontains)
   */
  private Date createTimeNotcontains;
  /**
   * 创建时间 比较(startswith)
   */
  private Date createTimeStartswith;
  /**
   * 创建时间 比较(endswith)
   */
  private Date createTimeEndswith;
  /**
   * 创建时间 比较(isnull)
   */
  private Boolean createTimeIsnull;
  /**
   * 创建时间 比较(isnotnull)
   */
  private Boolean createTimeIsnotnull;

  /**
   * 创建人
   */
  private Long createUser;

  /**
   * 最小创建人
   */
  private Long createUserMin;

  /**
   * 最大创建人
   */
  private Long createUserMax;

  /**
   * 创建人 比较(eq)
   */
  private Long createUserEq;
  /**
   * 创建人 比较(neq)
   */
  private Long createUserNeq;
  /**
   * 创建人 比较(gt)
   */
  private Long createUserGt;
  /**
   * 创建人 比较(gte)
   */
  private Long createUserGte;
  /**
   * 创建人 比较(lt)
   */
  private Long createUserLt;
  /**
   * 创建人 比较(lte)
   */
  private Long createUserLte;
  /**
   * 创建人 比较(contains)
   */
  private Long createUserContains;
  /**
   * 创建人 比较(notcontains)
   */
  private Long createUserNotcontains;
  /**
   * 创建人 比较(startswith)
   */
  private Long createUserStartswith;
  /**
   * 创建人 比较(endswith)
   */
  private Long createUserEndswith;
  /**
   * 创建人 比较(isnull)
   */
  private Boolean createUserIsnull;
  /**
   * 创建人 比较(isnotnull)
   */
  private Boolean createUserIsnotnull;

  /**
   * 最早更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeStart;

  /**
   * 最晚更新时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date lastUpdateTimeEnd;

  /**
   * 更新时间 比较(eq)
   */
  private Date lastUpdateTimeEq;
  /**
   * 更新时间 比较(neq)
   */
  private Date lastUpdateTimeNeq;
  /**
   * 更新时间 比较(gt)
   */
  private Date lastUpdateTimeGt;
  /**
   * 更新时间 比较(gte)
   */
  private Date lastUpdateTimeGte;
  /**
   * 更新时间 比较(lt)
   */
  private Date lastUpdateTimeLt;
  /**
   * 更新时间 比较(lte)
   */
  private Date lastUpdateTimeLte;
  /**
   * 更新时间 比较(contains)
   */
  private Date lastUpdateTimeContains;
  /**
   * 更新时间 比较(notcontains)
   */
  private Date lastUpdateTimeNotcontains;
  /**
   * 更新时间 比较(startswith)
   */
  private Date lastUpdateTimeStartswith;
  /**
   * 更新时间 比较(endswith)
   */
  private Date lastUpdateTimeEndswith;
  /**
   * 更新时间 比较(isnull)
   */
  private Boolean lastUpdateTimeIsnull;
  /**
   * 更新时间 比较(isnotnull)
   */
  private Boolean lastUpdateTimeIsnotnull;

  /**
   * 更新人
   */
  private Long lastUpdateUser;

  /**
   * 最小更新人
   */
  private Long lastUpdateUserMin;

  /**
   * 最大更新人
   */
  private Long lastUpdateUserMax;

  /**
   * 更新人 比较(eq)
   */
  private Long lastUpdateUserEq;
  /**
   * 更新人 比较(neq)
   */
  private Long lastUpdateUserNeq;
  /**
   * 更新人 比较(gt)
   */
  private Long lastUpdateUserGt;
  /**
   * 更新人 比较(gte)
   */
  private Long lastUpdateUserGte;
  /**
   * 更新人 比较(lt)
   */
  private Long lastUpdateUserLt;
  /**
   * 更新人 比较(lte)
   */
  private Long lastUpdateUserLte;
  /**
   * 更新人 比较(contains)
   */
  private Long lastUpdateUserContains;
  /**
   * 更新人 比较(notcontains)
   */
  private Long lastUpdateUserNotcontains;
  /**
   * 更新人 比较(startswith)
   */
  private Long lastUpdateUserStartswith;
  /**
   * 更新人 比较(endswith)
   */
  private Long lastUpdateUserEndswith;
  /**
   * 更新人 比较(isnull)
   */
  private Boolean lastUpdateUserIsnull;
  /**
   * 更新人 比较(isnotnull)
   */
  private Boolean lastUpdateUserIsnotnull;

  /**
   * 最早截止时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date endTimeStart;

  /**
   * 最晚截止时间
   */
  @DateTimeFormat(pattern = "yyyy-MM-dd")
  private Date endTimeEnd;

  /**
   * 截止时间 比较(eq)
   */
  private Date endTimeEq;
  /**
   * 截止时间 比较(neq)
   */
  private Date endTimeNeq;
  /**
   * 截止时间 比较(gt)
   */
  private Date endTimeGt;
  /**
   * 截止时间 比较(gte)
   */
  private Date endTimeGte;
  /**
   * 截止时间 比较(lt)
   */
  private Date endTimeLt;
  /**
   * 截止时间 比较(lte)
   */
  private Date endTimeLte;
  /**
   * 截止时间 比较(contains)
   */
  private Date endTimeContains;
  /**
   * 截止时间 比较(notcontains)
   */
  private Date endTimeNotcontains;
  /**
   * 截止时间 比较(startswith)
   */
  private Date endTimeStartswith;
  /**
   * 截止时间 比较(endswith)
   */
  private Date endTimeEndswith;
  /**
   * 截止时间 比较(isnull)
   */
  private Boolean endTimeIsnull;
  /**
   * 截止时间 比较(isnotnull)
   */
  private Boolean endTimeIsnotnull;

  /**
   * 分配人员
   */
  private Long assignPersonnel;

  /**
   * 分配人员 比较(eq)
   */
  private Long assignPersonnelEq;
  /**
   * 分配人员 比较(neq)
   */
  private Long assignPersonnelNeq;
  /**
   * 分配人员 比较(gt)
   */
  private Long assignPersonnelGt;
  /**
   * 分配人员 比较(gte)
   */
  private Long assignPersonnelGte;
  /**
   * 分配人员 比较(lt)
   */
  private Long assignPersonnelLt;
  /**
   * 分配人员 比较(lte)
   */
  private Long assignPersonnelLte;
  /**
   * 分配人员 比较(contains)
   */
  private Long assignPersonnelContains;
  /**
   * 分配人员 比较(notcontains)
   */
  private Long assignPersonnelNotcontains;
  /**
   * 分配人员 比较(startswith)
   */
  private Long assignPersonnelStartswith;
  /**
   * 分配人员 比较(endswith)
   */
  private Long assignPersonnelEndswith;
  /**
   * 分配人员 比较(isnull)
   */
  private Boolean assignPersonnelIsnull;
  /**
   * 分配人员 比较(isnotnull)
   */
  private Boolean assignPersonnelIsnotnull;
  /**
   * 分配人员的显示用户名 比较(eq)
   */
  private String assignPersonnelNameEq;
  /**
   * 分配人员的显示用户名 比较(neq)
   */
  private String assignPersonnelNameNeq;
  /**
   * 分配人员的显示用户名 比较(gt)
   */
  private String assignPersonnelNameGt;
  /**
   * 分配人员的显示用户名 比较(gte)
   */
  private String assignPersonnelNameGte;
  /**
   * 分配人员的显示用户名 比较(lt)
   */
  private String assignPersonnelNameLt;
  /**
   * 分配人员的显示用户名 比较(lte)
   */
  private String assignPersonnelNameLte;
  /**
   * 分配人员的显示用户名 比较(contains)
   */
  private String assignPersonnelNameContains;
  /**
   * 分配人员的显示用户名 比较(notcontains)
   */
  private String assignPersonnelNameNotcontains;
  /**
   * 分配人员的显示用户名 比较(startswith)
   */
  private String assignPersonnelNameStartswith;
  /**
   * 分配人员的显示用户名 比较(endswith)
   */
  private String assignPersonnelNameEndswith;
  /**
   * 分配人员的显示用户名 比较(isnull)
   */
  private Boolean assignPersonnelNameIsnull;
  /**
   * 分配人员的显示用户名 比较(isnotnull)
   */
  private Boolean assignPersonnelNameIsnotnull;

  /**
   * 状态
   */
  private String state;

  /**
   * 状态 比较(eq)
   */
  private String stateEq;
  /**
   * 状态 比较(neq)
   */
  private String stateNeq;
  /**
   * 状态 比较(gt)
   */
  private String stateGt;
  /**
   * 状态 比较(gte)
   */
  private String stateGte;
  /**
   * 状态 比较(lt)
   */
  private String stateLt;
  /**
   * 状态 比较(lte)
   */
  private String stateLte;
  /**
   * 状态 比较(contains)
   */
  private String stateContains;
  /**
   * 状态 比较(notcontains)
   */
  private String stateNotcontains;
  /**
   * 状态 比较(startswith)
   */
  private String stateStartswith;
  /**
   * 状态 比较(endswith)
   */
  private String stateEndswith;
  /**
   * 状态 比较(isnull)
   */
  private Boolean stateIsnull;
  /**
   * 状态 比较(isnotnull)
   */
  private Boolean stateIsnotnull;

  /**
   * 状态(精确搜索)
   */
  private List<String> stateInList;

  /**
   * 备注(模糊搜索)
   */
  private String remark;

  /**
   * 备注 比较(eq)
   */
  private String remarkEq;
  /**
   * 备注 比较(neq)
   */
  private String remarkNeq;
  /**
   * 备注 比较(gt)
   */
  private String remarkGt;
  /**
   * 备注 比较(gte)
   */
  private String remarkGte;
  /**
   * 备注 比较(lt)
   */
  private String remarkLt;
  /**
   * 备注 比较(lte)
   */
  private String remarkLte;
  /**
   * 备注 比较(contains)
   */
  private String remarkContains;
  /**
   * 备注 比较(notcontains)
   */
  private String remarkNotcontains;
  /**
   * 备注 比较(startswith)
   */
  private String remarkStartswith;
  /**
   * 备注 比较(endswith)
   */
  private String remarkEndswith;
  /**
   * 备注 比较(isnull)
   */
  private Boolean remarkIsnull;
  /**
   * 备注 比较(isnotnull)
   */
  private Boolean remarkIsnotnull;

  /**
   * 备注(精确搜索)
   */
  private List<String> remarkInList;

  /**
   * 勾稽字段
   */
  private Integer crossCheckingNum;

  /**
   * 最小勾稽字段
   */
  private Integer crossCheckingNumMin;

  /**
   * 最大勾稽字段
   */
  private Integer crossCheckingNumMax;

  /**
   * 勾稽字段 比较(eq)
   */
  private Integer crossCheckingNumEq;
  /**
   * 勾稽字段 比较(neq)
   */
  private Integer crossCheckingNumNeq;
  /**
   * 勾稽字段 比较(gt)
   */
  private Integer crossCheckingNumGt;
  /**
   * 勾稽字段 比较(gte)
   */
  private Integer crossCheckingNumGte;
  /**
   * 勾稽字段 比较(lt)
   */
  private Integer crossCheckingNumLt;
  /**
   * 勾稽字段 比较(lte)
   */
  private Integer crossCheckingNumLte;
  /**
   * 勾稽字段 比较(contains)
   */
  private Integer crossCheckingNumContains;
  /**
   * 勾稽字段 比较(notcontains)
   */
  private Integer crossCheckingNumNotcontains;
  /**
   * 勾稽字段 比较(startswith)
   */
  private Integer crossCheckingNumStartswith;
  /**
   * 勾稽字段 比较(endswith)
   */
  private Integer crossCheckingNumEndswith;
  /**
   * 勾稽字段 比较(isnull)
   */
  private Boolean crossCheckingNumIsnull;
  /**
   * 勾稽字段 比较(isnotnull)
   */
  private Boolean crossCheckingNumIsnotnull;

  /**
   * 表单名称
   */
  private String formName;

  /**
   * 工作流状态
   */
  private Integer wfStatus;
}
